package com.sdkj.recruit.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.sdkj.recruit.model.PostInformation;
import com.sdkj.recruit.model.ResultData;
import com.sdkj.recruit.vo.CompanyResumeVo;
import com.sdkj.recruit.vo.CompanyVo;
import com.sdkj.recruit.vo.LoginLogVo;
import com.sdkj.recruit.vo.PositionCollectionVo;
import com.sdkj.recruit.vo.PositionVo;
import com.sdkj.recruit.vo.ReportInfoVo;
import com.sdkj.recruit.vo.ResumeVo;
import com.sdkj.recruit.vo.WeixinConfigVo;

public interface ICompanyService {

	ResultData<Object> saveCompany(CompanyVo companyVo);

	ResultData<Object> queryCompanyById(String companyId);

	ResultData<Object> deleteCompany(String companyId);

	List<CompanyVo> queryCompanyList(int pageNo, int pageSize, int companyType);

	long queryAllCompanyCount(int companyType);

	ResultData<Object> report(ReportInfoVo reportVo);

	CompanyVo queryCompanyByMobile(String mobile);

	void updatePassword(String mobile, String password);

	void cleanUserLoginInfo(String userId);

	List<ResumeVo> queryResumeList(int pageNo, int pageSize, String keyWord, String companyId, String workYearType);

	long queryAllResumeCount(String keyWord, String workYearType);

	List<CompanyResumeVo> queryDeliverResumeList(int pageNo, int pageSize, String keyWord, String companyId);

	long queryAllDeliverResumeCount(String keyWord, String companyId);

	ResultData<Object> savePosition(PositionVo positionVo);

	List<PositionVo> queryPositionList(int pageNo, int pageSize, String keyWord, String companyId);

	long queryAllPositionCount(String keyWord, String companyId);

	ResultData<Object> queryWorkExperienceById(String id);

	ResultData<Object> queryEducationalExperienceById(String id);

	ResultData<Object> initEditPosition(String id, String userId);

	List<PositionVo> queryPositionListNew(int pageNo, int pageSize, String companyId,String userId);

	long queryAllPositionCount(String companyId);

	ResultData<Object> updatePosition(PositionVo positionVo);

	ResultData<Object> collection(String userId, String positionId,int collectionType);

	List<PositionCollectionVo> querycollectionList(int pageNo, int pageSize, String userId);

	long queryAllCompanyCount(String userId);

	long queryAllCollectionCount(String userId);

	ResultData<Object> updateStatus(String id, int status);

	ResultData<Object> deliverList(int pageNo, int pageSize, String userId);

	/**
	 * 企业认证服务
	 * @param companyVo
	 * @return
	 */
	ResultData<Object> auth(CompanyVo companyVo);

	/**
	 * 获取职位信息
	 * @param pageNo
	 * @param pageSize
	 * @param queryType
	 * @param userId 
	 * @param latitude 
	 * @param longitude 
	 * @param keyWord 
	 * @return
	 */
	ResultData<Object> queryPositions(int pageNo, int pageSize, int queryType, String userId, String longitude, String latitude, String keyWord);

	/**
	 * 记录登录信息
	 * @param request
	 * @param companyId 
	 */
	void registerLog(HttpServletRequest request, String companyId);

	long queryAllLogsCount(String companyId, int queryType);

	/**
	 * 获取登录日志
	 * @param pageNo
	 * @param pageSize
	 * @param companyId
	 * @param queryType
	 * @return
	 */
	List<LoginLogVo> queryLoginLogs(int pageNo, int pageSize, String companyId, int queryType);

	/**
	 * 获取简历
	 * @param resumeId
	 * @return
	 */
	ResumeVo queryResumeById(String resumeId);

	/**
	 * 保存企业办公环境
	 */
	ResultData<Object> saveCompanyPic(CompanyVo companyVo);

	/**
	 * 附近的企业
	 * @param pageNo
	 * @param pageSize
	 * @param longitude
	 * @param latitude
	 * @param distance
	 * @return
	 */
	ResultData<Object> queryNearbyCompany(int pageNo, int pageSize, String longitude, String latitude, int distance);

	ResultData<Object> jscode2session(String code);

	WeixinConfigVo querySessionKeyByUniqueId(String uniqueId);

	void save(PostInformation pi1);

	ResultData<Object> queryPostIno(String parentId, int queryType);

	PostInformation queryPostByName(String f1);

	ResultData<Object> collectionResume(String companyId, List<String> resumeIds);

	ResultData<Object> check(String mobile, String checkcode, int type);

	void updateCompanyMobile(String mobile, String companyId);

	/**
	 * 名称，父ID 判断是否存在
	 * @param name
	 * @param pid
	 * @return
	 */
	PostInformation queryPostByName(String name, String pid);

	/**
	 * 初始化职位坐标
	 */
	void updateLaction();

	/**
	 * 设置热门企业
	 */
	void sethotCompany();

	/**
	 * 更新新密码
	 * @param mobile
	 * @param newpsw
	 */
	void updateNewPassword(String mobile, String newpsw);
}
